#define _CRT_SECURE_NO_WARNINGS 1


#include <stdio.h >
#include <assert.h>
//void find_single_dog(int* arr, int sz)
//{
//	int single1 = 0;
//	int single2 = 0;
//
//	int ret = 0;
//	int i = 0;
//	int pos = 0;
//
//	for (i = 0; i < sz; i++)
//	{
//		ret ^= arr[i];
//	}
//	for (i = 0; i < 32; i++)
//	{
//		if (((ret >> i) & 1) == 1)
//		{
//			pos = i;
//			break;
//		}
//	}
//
//	for (i = 0; i < sz; i++)
//	{
//		if (((arr[i] >> pos) & 1) == 1)
//		{
//			single1 ^= arr[i];
//		}
//	}
//	single2 = ret ^ single1;
//	printf("%d %d\n", single1, single2);
//
//}
//
//int main()
//{
//	int arr[] = {1,2,3,4,5,1,2,3,4,6};
//	int sz = sizeof(arr)/sizeof(arr[0]);
//
//	find_single_dog(arr,sz);
//
//	return 0;
//}

char* my_strncpy(char* arr1, char* arr2, int n)
{
	assert(arr1 && arr1);
	char* ret = arr1;
	int len = strlen(arr2);
	int len1 = len;
	if (n <= len)
	{
		while (n)
		{
			*arr1 = *arr2;
			arr1++;
			arr2++;
			n--;
		}
		*(arr1) = '\0';
	}
	else
	{
		while (len)
		{
			*arr1 = *arr2;
			arr1++;
			arr2++;
			len--;

		}
		int k = n - len1;
		while (k)
		{
			*arr1 = '0';
			arr1++;
			k--;
		}
		*(arr1) = '\0';
	}
	return ret;
}

char* my_strncat(char* arr1, char* arr2, int n)
{
	assert(arr1 && arr2);
	char* ret = arr1;

	while (*arr1)
	{
		*arr1++;
	}

	while (n)
	{
		*arr1 = *arr2;
		arr1++;
		arr2++;
		n--;
	}
	return ret;
}

int main()
{
	char arr1 [30] = "abc";
	char arr2[30] = "abcdefg";
    char *ret = my_strncat(arr1,arr2,9);
    printf("%s\n",ret);
	return 0;
}